INotifyPropertyChangedやICommandを簡単に実装できる。
| 提供されるクラス | 名前空間 | 担当機能 |
| ObservableObject | CommunityToolkit.Mvvm.ComponentModel | INotifyPropertyChangedを実装したオブジェクトの基底クラス |
| RelayCommand | CommunityToolkit.Mvvm.Input | ICommandの実装 |
| WeakReferenceMessenger | CommunityToolkit.Mvvm.Messeging | Messenger (詳細割愛) |
| IoC | CommunityToolkit.Mvvm.DependencyInjection | DI 、IoC (詳細割愛) |
CommunityToolkit.Mvvm がインストールされていない場合は、Nuget より取得する。
ObservableObject を継承する。
変更通知プロパティとなるバッキングフィールドには [ObservableProperty] 属性、コマンドには [RelayCommand] 属性を付与する。
実際にバインドソースとなるプロパティおよびハンドラは、ビルド時に自動生成される。それらの命名規則は下表を参照。
コード中においても、元の定義名でのアクセスはエラーとなるため、生成されたシンボル名でアクセスする。
| 変更通知プロパティ | ViewModel における定義 | 生成されるプロパティ | バインド時に指定するパス |
| name (先頭が小文字) |
NameProperty | Name | |
| _name (先頭がアンダースコア + 小文字) |
NameProperty | Name |
| コマンド | ViewModel における定義 | 生成されるハンドラ | バインド時に指定するパス |
| DoSomething() (一般的なメソッド名) |
DoSomethingCommand() | DoSomethingCommand | |
| OnDoSomething() (先頭が "On" ) |
DoSomethingCommand() | DoSomethingCommand |
On####Changing() 、On####Changed() を定義する。
( #### は Property を除くプロパティ名)